// Generated from Lua.g by ANTLR 4.7.3-SNAPSHOT


import { ATN } from "antlr4ts/atn/ATN";
import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer";
import { CharStream } from "antlr4ts/CharStream";
import { Lexer } from "antlr4ts/Lexer";
import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator";
import { NotNull } from "antlr4ts/Decorators";
import { Override } from "antlr4ts/Decorators";
import { RuleContext } from "antlr4ts/RuleContext";
import { Vocabulary } from "antlr4ts/Vocabulary";
import { VocabularyImpl } from "antlr4ts/VocabularyImpl";

import * as Utils from "antlr4ts/misc/Utils";


export class LuaLexer extends Lexer {
	public static readonly T__0 = 1;
	public static readonly T__1 = 2;
	public static readonly T__2 = 3;
	public static readonly T__3 = 4;
	public static readonly T__4 = 5;
	public static readonly T__5 = 6;
	public static readonly T__6 = 7;
	public static readonly T__7 = 8;
	public static readonly T__8 = 9;
	public static readonly T__9 = 10;
	public static readonly T__10 = 11;
	public static readonly T__11 = 12;
	public static readonly T__12 = 13;
	public static readonly T__13 = 14;
	public static readonly T__14 = 15;
	public static readonly T__15 = 16;
	public static readonly T__16 = 17;
	public static readonly T__17 = 18;
	public static readonly T__18 = 19;
	public static readonly T__19 = 20;
	public static readonly T__20 = 21;
	public static readonly T__21 = 22;
	public static readonly T__22 = 23;
	public static readonly T__23 = 24;
	public static readonly T__24 = 25;
	public static readonly T__25 = 26;
	public static readonly T__26 = 27;
	public static readonly T__27 = 28;
	public static readonly T__28 = 29;
	public static readonly T__29 = 30;
	public static readonly T__30 = 31;
	public static readonly T__31 = 32;
	public static readonly T__32 = 33;
	public static readonly T__33 = 34;
	public static readonly T__34 = 35;
	public static readonly T__35 = 36;
	public static readonly T__36 = 37;
	public static readonly T__37 = 38;
	public static readonly T__38 = 39;
	public static readonly T__39 = 40;
	public static readonly T__40 = 41;
	public static readonly T__41 = 42;
	public static readonly T__42 = 43;
	public static readonly T__43 = 44;
	public static readonly T__44 = 45;
	public static readonly T__45 = 46;
	public static readonly T__46 = 47;
	public static readonly SPREAD = 48;
	public static readonly NAME = 49;
	public static readonly NORMALSTRING = 50;
	public static readonly CHARSTRING = 51;
	public static readonly LONGSTRING = 52;
	public static readonly INT = 53;
	public static readonly HEX = 54;
	public static readonly FLOAT = 55;
	public static readonly HEX_FLOAT = 56;
	public static readonly COMMENT = 57;
	public static readonly LINE_COMMENT = 58;
	public static readonly WS = 59;
	public static readonly SHEBANG = 60;

	// tslint:disable:no-trailing-whitespace
	public static readonly channelNames: string[] = [
		"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
	];

	// tslint:disable:no-trailing-whitespace
	public static readonly modeNames: string[] = [
		"DEFAULT_MODE",
	];

	public static readonly ruleNames: string[] = [
		"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", 
		"T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", 
		"T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24", 
		"T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", 
		"T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", 
		"T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "SPREAD", "NAME", 
		"NORMALSTRING", "CHARSTRING", "LONGSTRING", "NESTED_STR", "INT", "HEX", 
		"FLOAT", "HEX_FLOAT", "ExponentPart", "HexExponentPart", "EscapeSequence", 
		"DecimalEscape", "HexEscape", "UtfEscape", "Digit", "HexDigit", "COMMENT", 
		"LINE_COMMENT", "WS", "SHEBANG",
	];

	private static readonly _LITERAL_NAMES: Array<string | undefined> = [
		undefined, "';'", "'do'", "'end'", "'while'", "'if'", "'then'", "'elseif'", 
		"'else'", "'for'", "'='", "','", "'in'", "'function'", "'local'", "'repeat'", 
		"'until'", "'return'", "'break'", "'.'", "':'", "'nil'", "'false'", "'true'", 
		"'('", "')'", "'['", "']'", "'{'", "'}'", "'+'", "'-'", "'*'", "'/'", 
		"'^'", "'%'", "'..'", "'<'", "'<='", "'>'", "'>='", "'=='", "'~='", "'and'", 
		"'or'", "'|'", "'not'", "'#'", "'...'",
	];
	private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, "SPREAD", 
		"NAME", "NORMALSTRING", "CHARSTRING", "LONGSTRING", "INT", "HEX", "FLOAT", 
		"HEX_FLOAT", "COMMENT", "LINE_COMMENT", "WS", "SHEBANG",
	];
	public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(LuaLexer._LITERAL_NAMES, LuaLexer._SYMBOLIC_NAMES, []);

	// @Override
	// @NotNull
	public get vocabulary(): Vocabulary {
		return LuaLexer.VOCABULARY;
	}
	// tslint:enable:no-trailing-whitespace


	constructor(input: CharStream) {
		super(input);
		this._interp = new LexerATNSimulator(LuaLexer._ATN, this);
	}

	// @Override
	public get grammarFileName(): string { return "Lua.g"; }

	// @Override
	public get ruleNames(): string[] { return LuaLexer.ruleNames; }

	// @Override
	public get serializedATN(): string { return LuaLexer._serializedATN; }

	// @Override
	public get channelNames(): string[] { return LuaLexer.channelNames; }

	// @Override
	public get modeNames(): string[] { return LuaLexer.modeNames; }

	private static readonly _serializedATNSegments: number = 2;
	private static readonly _serializedATNSegment0: string =
		"\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02>\u0238\b\x01" +
		"\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" +
		"\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" +
		"\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t" +
		"\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t" +
		"\x17\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t" +
		"\x1C\x04\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t" +
		"\"\x04#\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04" +
		"+\t+\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x04" +
		"4\t4\x045\t5\x046\t6\x047\t7\x048\t8\x049\t9\x04:\t:\x04;\t;\x04<\t<\x04" +
		"=\t=\x04>\t>\x04?\t?\x04@\t@\x04A\tA\x04B\tB\x04C\tC\x04D\tD\x04E\tE\x04" +
		"F\tF\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04\x03\x04\x03" +
		"\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06\x03" +
		"\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\b\x03\b\x03\b\x03\b\x03" +
		"\b\x03\b\x03\b\x03\t\x03\t\x03\t\x03\t\x03\t\x03\n\x03\n\x03\n\x03\n\x03" +
		"\v\x03\v\x03\f\x03\f\x03\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0E\x03\x0E" +
		"\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F" +
		"\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x10\x03\x10\x03\x10\x03\x10\x03\x10" +
		"\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12" +
		"\x03\x12\x03\x12\x03\x12\x03\x12\x03\x13\x03\x13\x03\x13\x03\x13\x03\x13" +
		"\x03\x13\x03\x14\x03\x14\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x03\x16" +
		"\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18" +
		"\x03\x18\x03\x18\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1C" +
		"\x03\x1C\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03 \x03 \x03" +
		"!\x03!\x03\"\x03\"\x03#\x03#\x03$\x03$\x03%\x03%\x03%\x03&\x03&\x03\'" +
		"\x03\'\x03\'\x03(\x03(\x03)\x03)\x03)\x03*\x03*\x03*\x03+\x03+\x03+\x03" +
		",\x03,\x03,\x03,\x03-\x03-\x03-\x03.\x03.\x03/\x03/\x03/\x03/\x030\x03" +
		"0\x031\x031\x031\x031\x032\x032\x072\u0138\n2\f2\x0E2\u013B\v2\x033\x03" +
		"3\x033\x073\u0140\n3\f3\x0E3\u0143\v3\x033\x033\x034\x034\x034\x074\u014A" +
		"\n4\f4\x0E4\u014D\v4\x034\x034\x035\x035\x035\x035\x036\x036\x036\x03" +
		"6\x036\x036\x076\u015B\n6\f6\x0E6\u015E\v6\x036\x056\u0161\n6\x037\x06" +
		"7\u0164\n7\r7\x0E7\u0165\x038\x038\x038\x068\u016B\n8\r8\x0E8\u016C\x03" +
		"9\x069\u0170\n9\r9\x0E9\u0171\x039\x039\x079\u0176\n9\f9\x0E9\u0179\v" +
		"9\x039\x059\u017C\n9\x039\x039\x069\u0180\n9\r9\x0E9\u0181\x039\x059\u0185" +
		"\n9\x039\x069\u0188\n9\r9\x0E9\u0189\x039\x039\x059\u018E\n9\x03:\x03" +
		":\x03:\x06:\u0193\n:\r:\x0E:\u0194\x03:\x03:\x07:\u0199\n:\f:\x0E:\u019C" +
		"\v:\x03:\x05:\u019F\n:\x03:\x03:\x03:\x03:\x06:\u01A5\n:\r:\x0E:\u01A6" +
		"\x03:\x05:\u01AA\n:\x03:\x03:\x03:\x06:\u01AF\n:\r:\x0E:\u01B0\x03:\x03" +
		":\x05:\u01B5\n:\x03;\x03;\x05;\u01B9\n;\x03;\x06;\u01BC\n;\r;\x0E;\u01BD" +
		"\x03<\x03<\x05<\u01C2\n<\x03<\x06<\u01C5\n<\r<\x0E<\u01C6\x03=\x03=\x03" +
		"=\x03=\x05=\u01CD\n=\x03=\x03=\x03=\x03=\x05=\u01D3\n=\x03>\x03>\x03>" +
		"\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x03>\x05>\u01E0\n>\x03?\x03?\x03?" +
		"\x03?\x03?\x03@\x03@\x03@\x03@\x03@\x06@\u01EC\n@\r@\x0E@\u01ED\x03@\x03" +
		"@\x03A\x03A\x03B\x03B\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03C\x03" +
		"D\x03D\x03D\x03D\x03D\x03D\x07D\u0205\nD\fD\x0ED\u0208\vD\x03D\x03D\x07" +
		"D\u020C\nD\fD\x0ED\u020F\vD\x03D\x03D\x07D\u0213\nD\fD\x0ED\u0216\vD\x03" +
		"D\x03D\x07D\u021A\nD\fD\x0ED\u021D\vD\x05D\u021F\nD\x03D\x03D\x03D\x05" +
		"D\u0224\nD\x03D\x03D\x03E\x06E\u0229\nE\rE\x0EE\u022A\x03E\x03E\x03F\x03" +
		"F\x03F\x07F\u0232\nF\fF\x0EF\u0235\vF\x03F\x03F\x03\u015C\x02\x02G\x03" +
		"\x02\x03\x05\x02\x04\x07\x02\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F\x02\t" +
		"\x11\x02\n\x13\x02\v\x15\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02" +
		"\x10\x1F\x02\x11!\x02\x12#\x02\x13%\x02\x14\'\x02\x15)\x02\x16+\x02\x17" +
		"-\x02\x18/\x02\x191\x02\x1A3\x02\x1B5\x02\x1C7\x02\x1D9\x02\x1E;\x02\x1F" +
		"=\x02 ?\x02!A\x02\"C\x02#E\x02$G\x02%I\x02&K\x02\'M\x02(O\x02)Q\x02*S" +
		"\x02+U\x02,W\x02-Y\x02.[\x02/]\x020_\x021a\x022c\x023e\x024g\x025i\x02" +
		"6k\x02\x02m\x027o\x028q\x029s\x02:u\x02\x02w\x02\x02y\x02\x02{\x02\x02" +
		"}\x02\x02\x7F\x02\x02\x81\x02\x02\x83\x02\x02\x85\x02;\x87\x02<\x89\x02" +
		"=\x8B\x02>\x03\x02\x13\x05\x02C\\aac|\x06\x022;C\\aac|\x04\x02$$^^\x04" +
		"\x02))^^\x04\x02ZZzz\x04\x02GGgg\x04\x02--//\x04\x02RRrr\f\x02$$))^^c" +
		"dhhppttvvxx||\x03\x0224\x03\x022;\x05\x022;CHch\x06\x02\f\f\x0F\x0F??" +
		"]]\x04\x02\f\f\x0F\x0F\x05\x02\f\f\x0F\x0F]]\x04\x03\f\f\x0F\x0F\x05\x02" +
		"\v\f\x0E\x0F\"\"\x02\u025D\x02\x03\x03\x02\x02\x02\x02\x05\x03\x02\x02" +
		"\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02\v\x03\x02\x02\x02" +
		"\x02\r\x03\x02\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02" +
		"\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02" +
		"\x02\x19\x03\x02\x02\x02\x02\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02" +
		"\x02\x1F\x03\x02\x02\x02\x02!\x03\x02\x02\x02\x02#\x03\x02\x02\x02\x02" +
		"%\x03\x02\x02\x02\x02\'\x03\x02\x02\x02\x02)\x03\x02\x02\x02\x02+\x03" +
		"\x02\x02\x02\x02-\x03\x02\x02\x02\x02/\x03\x02\x02\x02\x021\x03\x02\x02" +
		"\x02\x023\x03\x02\x02\x02\x025\x03\x02\x02\x02\x027\x03\x02\x02\x02\x02" +
		"9\x03\x02\x02\x02\x02;\x03\x02\x02\x02\x02=\x03\x02\x02\x02\x02?\x03\x02" +
		"\x02\x02\x02A\x03\x02\x02\x02\x02C\x03\x02\x02\x02\x02E\x03\x02\x02\x02" +
		"\x02G\x03\x02\x02\x02\x02I\x03\x02\x02\x02\x02K\x03\x02\x02\x02\x02M\x03" +
		"\x02\x02\x02\x02O\x03\x02\x02\x02\x02Q\x03\x02\x02\x02\x02S\x03\x02\x02" +
		"\x02\x02U\x03\x02\x02\x02\x02W\x03\x02\x02\x02\x02Y\x03\x02\x02\x02\x02" +
		"[\x03\x02\x02\x02\x02]\x03\x02\x02\x02\x02_\x03\x02\x02\x02\x02a\x03\x02" +
		"\x02\x02\x02c\x03\x02\x02\x02\x02e\x03\x02\x02\x02\x02g\x03\x02\x02\x02" +
		"\x02i\x03\x02\x02\x02\x02m\x03\x02\x02\x02\x02o\x03\x02\x02\x02\x02q\x03" +
		"\x02\x02\x02\x02s\x03\x02\x02\x02\x02\x85\x03\x02\x02\x02\x02\x87\x03" +
		"\x02\x02\x02\x02\x89\x03\x02\x02\x02\x02\x8B\x03\x02\x02\x02\x03\x8D\x03" +
		"\x02\x02\x02\x05\x8F\x03\x02\x02\x02\x07\x92\x03\x02\x02\x02\t\x96\x03" +
		"\x02\x02\x02\v\x9C\x03\x02\x02\x02\r\x9F\x03\x02\x02\x02\x0F\xA4\x03\x02" +
		"\x02\x02\x11\xAB\x03\x02\x02\x02\x13\xB0\x03\x02\x02\x02\x15\xB4\x03\x02" +
		"\x02\x02\x17\xB6\x03\x02\x02\x02\x19\xB8\x03\x02\x02\x02\x1B\xBB\x03\x02" +
		"\x02\x02\x1D\xC4\x03\x02\x02\x02\x1F\xCA\x03\x02\x02\x02!\xD1\x03\x02" +
		"\x02\x02#\xD7\x03\x02\x02\x02%\xDE\x03\x02\x02\x02\'\xE4\x03\x02\x02\x02" +
		")\xE6\x03\x02\x02\x02+\xE8\x03\x02\x02\x02-\xEC\x03\x02\x02\x02/\xF2\x03" +
		"\x02\x02\x021\xF7\x03\x02\x02\x023\xF9\x03\x02\x02\x025\xFB\x03\x02\x02" +
		"\x027\xFD\x03\x02\x02\x029\xFF\x03\x02\x02\x02;\u0101\x03\x02\x02\x02" +
		"=\u0103\x03\x02\x02\x02?\u0105\x03\x02\x02\x02A\u0107\x03\x02\x02\x02" +
		"C\u0109\x03\x02\x02\x02E\u010B\x03\x02\x02\x02G\u010D\x03\x02\x02\x02" +
		"I\u010F\x03\x02\x02\x02K\u0112\x03\x02\x02\x02M\u0114\x03\x02\x02\x02" +
		"O\u0117\x03\x02\x02\x02Q\u0119\x03\x02\x02\x02S\u011C\x03\x02\x02\x02" +
		"U\u011F\x03\x02\x02\x02W\u0122\x03\x02\x02\x02Y\u0126\x03\x02\x02\x02" +
		"[\u0129\x03\x02\x02\x02]\u012B\x03\x02\x02\x02_\u012F\x03\x02\x02\x02" +
		"a\u0131\x03\x02\x02\x02c\u0135\x03\x02\x02\x02e\u013C\x03\x02\x02\x02" +
		"g\u0146\x03\x02\x02\x02i\u0150\x03\x02\x02\x02k\u0160\x03\x02\x02\x02" +
		"m\u0163\x03\x02\x02\x02o\u0167\x03\x02\x02\x02q\u018D\x03\x02\x02\x02" +
		"s\u01B4\x03\x02\x02\x02u\u01B6\x03\x02\x02\x02w\u01BF\x03\x02\x02\x02" +
		"y\u01D2\x03\x02\x02\x02{\u01DF\x03\x02\x02\x02}\u01E1\x03\x02\x02\x02" +
		"\x7F\u01E6\x03\x02\x02\x02\x81\u01F1\x03\x02\x02\x02\x83\u01F3\x03\x02" +
		"\x02\x02\x85\u01F5\x03\x02\x02\x02\x87\u01FE\x03\x02\x02\x02\x89\u0228" +
		"\x03\x02\x02\x02\x8B\u022E\x03\x02\x02\x02\x8D\x8E\x07=\x02\x02\x8E\x04" +
		"\x03\x02\x02\x02\x8F\x90\x07f\x02\x02\x90\x91\x07q\x02\x02\x91\x06\x03" +
		"\x02\x02\x02\x92\x93\x07g\x02\x02\x93\x94\x07p\x02\x02\x94\x95\x07f\x02" +
		"\x02\x95\b\x03\x02\x02\x02\x96\x97\x07y\x02\x02\x97\x98\x07j\x02\x02\x98" +
		"\x99\x07k\x02\x02\x99\x9A\x07n\x02\x02\x9A\x9B\x07g\x02\x02\x9B\n\x03" +
		"\x02\x02\x02\x9C\x9D\x07k\x02\x02\x9D\x9E\x07h\x02\x02\x9E\f\x03\x02\x02" +
		"\x02\x9F\xA0\x07v\x02\x02\xA0\xA1\x07j\x02\x02\xA1\xA2\x07g\x02\x02\xA2" +
		"\xA3\x07p\x02\x02\xA3\x0E\x03\x02\x02\x02\xA4\xA5\x07g\x02\x02\xA5\xA6" +
		"\x07n\x02\x02\xA6\xA7\x07u\x02\x02\xA7\xA8\x07g\x02\x02\xA8\xA9\x07k\x02" +
		"\x02\xA9\xAA\x07h\x02\x02\xAA\x10\x03\x02\x02\x02\xAB\xAC\x07g\x02\x02" +
		"\xAC\xAD\x07n\x02\x02\xAD\xAE\x07u\x02\x02\xAE\xAF\x07g\x02\x02\xAF\x12" +
		"\x03\x02\x02\x02\xB0\xB1\x07h\x02\x02\xB1\xB2\x07q\x02\x02\xB2\xB3\x07" +
		"t\x02\x02\xB3\x14\x03\x02\x02\x02\xB4\xB5\x07?\x02\x02\xB5\x16\x03\x02" +
		"\x02\x02\xB6\xB7\x07.\x02\x02\xB7\x18\x03\x02\x02\x02\xB8\xB9\x07k\x02" +
		"\x02\xB9\xBA\x07p\x02\x02\xBA\x1A\x03\x02\x02\x02\xBB\xBC\x07h\x02\x02" +
		"\xBC\xBD\x07w\x02\x02\xBD\xBE\x07p\x02\x02\xBE\xBF\x07e\x02\x02\xBF\xC0" +
		"\x07v\x02\x02\xC0\xC1\x07k\x02\x02\xC1\xC2\x07q\x02\x02\xC2\xC3\x07p\x02" +
		"\x02\xC3\x1C\x03\x02\x02\x02\xC4\xC5\x07n\x02\x02\xC5\xC6\x07q\x02\x02" +
		"\xC6\xC7\x07e\x02\x02\xC7\xC8\x07c\x02\x02\xC8\xC9\x07n\x02\x02\xC9\x1E" +
		"\x03\x02\x02\x02\xCA\xCB\x07t\x02\x02\xCB\xCC\x07g\x02\x02\xCC\xCD\x07" +
		"r\x02\x02\xCD\xCE\x07g\x02\x02\xCE\xCF\x07c\x02\x02\xCF\xD0\x07v\x02\x02" +
		"\xD0 \x03\x02\x02\x02\xD1\xD2\x07w\x02\x02\xD2\xD3\x07p\x02\x02\xD3\xD4" +
		"\x07v\x02\x02\xD4\xD5\x07k\x02\x02\xD5\xD6\x07n\x02\x02\xD6\"\x03\x02" +
		"\x02\x02\xD7\xD8\x07t\x02\x02\xD8\xD9\x07g\x02\x02\xD9\xDA\x07v\x02\x02" +
		"\xDA\xDB\x07w\x02\x02\xDB\xDC\x07t\x02\x02\xDC\xDD\x07p\x02\x02\xDD$\x03" +
		"\x02\x02\x02\xDE\xDF\x07d\x02\x02\xDF\xE0\x07t\x02\x02\xE0\xE1\x07g\x02" +
		"\x02\xE1\xE2\x07c\x02\x02\xE2\xE3\x07m\x02\x02\xE3&\x03\x02\x02\x02\xE4" +
		"\xE5\x070\x02\x02\xE5(\x03\x02\x02\x02\xE6\xE7\x07<\x02\x02\xE7*\x03\x02" +
		"\x02\x02\xE8\xE9\x07p\x02\x02\xE9\xEA\x07k\x02\x02\xEA\xEB\x07n\x02\x02" +
		"\xEB,\x03\x02\x02\x02\xEC\xED\x07h\x02\x02\xED\xEE\x07c\x02\x02\xEE\xEF" +
		"\x07n\x02\x02\xEF\xF0\x07u\x02\x02\xF0\xF1\x07g\x02\x02\xF1.\x03\x02\x02" +
		"\x02\xF2\xF3\x07v\x02\x02\xF3\xF4\x07t\x02\x02\xF4\xF5\x07w\x02\x02\xF5" +
		"\xF6\x07g\x02\x02\xF60\x03\x02\x02\x02\xF7\xF8\x07*\x02\x02\xF82\x03\x02" +
		"\x02\x02\xF9\xFA\x07+\x02\x02\xFA4\x03\x02\x02\x02\xFB\xFC\x07]\x02\x02" +
		"\xFC6\x03\x02\x02\x02\xFD\xFE\x07_\x02\x02\xFE8\x03\x02\x02\x02\xFF\u0100" +
		"\x07}\x02\x02\u0100:\x03\x02\x02\x02\u0101\u0102\x07\x7F\x02\x02\u0102" +
		"<\x03\x02\x02\x02\u0103\u0104\x07-\x02\x02\u0104>\x03\x02\x02\x02\u0105" +
		"\u0106\x07/\x02\x02\u0106@\x03\x02\x02\x02\u0107\u0108\x07,\x02\x02\u0108" +
		"B\x03\x02\x02\x02\u0109\u010A\x071\x02\x02\u010AD\x03\x02\x02\x02\u010B" +
		"\u010C\x07`\x02\x02\u010CF\x03\x02\x02\x02\u010D\u010E\x07\'\x02\x02\u010E" +
		"H\x03\x02\x02\x02\u010F\u0110\x070\x02\x02\u0110\u0111\x070\x02\x02\u0111" +
		"J\x03\x02\x02\x02\u0112\u0113\x07>\x02\x02\u0113L\x03\x02\x02\x02\u0114" +
		"\u0115\x07>\x02\x02\u0115\u0116\x07?\x02\x02\u0116N\x03\x02\x02\x02\u0117" +
		"\u0118\x07@\x02\x02\u0118P\x03\x02\x02\x02\u0119\u011A\x07@\x02\x02\u011A" +
		"\u011B\x07?\x02\x02\u011BR\x03\x02\x02\x02\u011C\u011D\x07?\x02\x02\u011D" +
		"\u011E\x07?\x02\x02\u011ET\x03\x02\x02\x02\u011F\u0120\x07\x80\x02\x02" +
		"\u0120\u0121\x07?\x02\x02\u0121V\x03\x02\x02\x02\u0122\u0123\x07c\x02" +
		"\x02\u0123\u0124\x07p\x02\x02\u0124\u0125\x07f\x02\x02\u0125X\x03\x02" +
		"\x02\x02\u0126\u0127\x07q\x02\x02\u0127\u0128\x07t\x02\x02\u0128Z\x03" +
		"\x02\x02\x02\u0129\u012A\x07~\x02\x02\u012A\\\x03\x02\x02\x02\u012B\u012C" +
		"\x07p\x02\x02\u012C\u012D\x07q\x02\x02\u012D\u012E\x07v\x02\x02\u012E" +
		"^\x03\x02\x02\x02\u012F\u0130\x07%\x02\x02\u0130`\x03\x02\x02\x02\u0131" +
		"\u0132\x070\x02\x02\u0132\u0133\x070\x02\x02\u0133\u0134\x070\x02\x02" +
		"\u0134b\x03\x02\x02\x02\u0135\u0139\t\x02\x02\x02\u0136\u0138\t\x03\x02" +
		"\x02\u0137\u0136\x03\x02\x02\x02\u0138\u013B\x03\x02\x02\x02\u0139\u0137" +
		"\x03\x02\x02\x02\u0139\u013A\x03\x02\x02\x02\u013Ad\x03\x02\x02\x02\u013B" +
		"\u0139\x03\x02\x02\x02\u013C\u0141\x07$\x02\x02\u013D\u0140\x05y=\x02" +
		"\u013E\u0140\n\x04\x02\x02\u013F\u013D\x03\x02\x02\x02\u013F\u013E\x03" +
		"\x02\x02\x02\u0140\u0143\x03\x02\x02\x02\u0141\u013F\x03\x02\x02\x02\u0141" +
		"\u0142\x03\x02\x02\x02\u0142\u0144\x03\x02\x02\x02\u0143\u0141\x03\x02" +
		"\x02\x02\u0144\u0145\x07$\x02\x02\u0145f\x03\x02\x02\x02\u0146\u014B\x07" +
		")\x02\x02\u0147\u014A\x05y=\x02\u0148\u014A\n\x05\x02\x02\u0149\u0147" +
		"\x03\x02\x02\x02\u0149\u0148\x03\x02\x02\x02\u014A\u014D\x03\x02\x02\x02" +
		"\u014B\u0149\x03\x02\x02\x02\u014B\u014C\x03\x02\x02\x02\u014C\u014E\x03" +
		"\x02\x02\x02\u014D\u014B\x03\x02\x02\x02\u014E\u014F\x07)\x02\x02\u014F" +
		"h\x03\x02\x02\x02\u0150\u0151\x07]\x02\x02\u0151\u0152\x05k6\x02\u0152" +
		"\u0153\x07_\x02\x02\u0153j\x03\x02\x02\x02\u0154\u0155\x07?\x02\x02\u0155" +
		"\u0156\x05k6\x02\u0156\u0157\x07?\x02\x02\u0157\u0161\x03\x02\x02\x02" +
		"\u0158\u015C\x07]\x02\x02\u0159\u015B\v\x02\x02\x02\u015A\u0159\x03\x02" +
		"\x02\x02\u015B\u015E\x03\x02\x02\x02\u015C\u015D\x03\x02\x02\x02\u015C" +
		"\u015A\x03\x02\x02\x02\u015D\u015F\x03\x02\x02\x02\u015E\u015C\x03\x02" +
		"\x02\x02\u015F\u0161\x07_\x02\x02\u0160\u0154\x03\x02\x02\x02\u0160\u0158" +
		"\x03\x02\x02\x02\u0161l\x03\x02\x02\x02\u0162\u0164\x05\x81A\x02\u0163" +
		"\u0162\x03\x02\x02\x02\u0164\u0165\x03\x02\x02\x02\u0165\u0163\x03\x02" +
		"\x02\x02\u0165\u0166\x03\x02\x02\x02\u0166n\x03\x02\x02\x02\u0167\u0168" +
		"\x072\x02\x02\u0168\u016A\t\x06\x02\x02\u0169\u016B\x05\x83B\x02\u016A" +
		"\u0169\x03\x02\x02\x02\u016B\u016C\x03\x02\x02\x02\u016C\u016A\x03\x02" +
		"\x02\x02\u016C\u016D\x03\x02\x02\x02\u016Dp\x03\x02\x02\x02\u016E\u0170" +
		"\x05\x81A\x02\u016F\u016E\x03\x02\x02\x02\u0170\u0171\x03\x02\x02\x02" +
		"\u0171\u016F\x03\x02\x02\x02\u0171\u0172\x03\x02\x02\x02\u0172\u0173\x03" +
		"\x02\x02\x02\u0173\u0177\x070\x02\x02\u0174\u0176\x05\x81A\x02\u0175\u0174" +
		"\x03\x02\x02\x02\u0176\u0179\x03\x02\x02\x02\u0177\u0175\x03\x02\x02\x02" +
		"\u0177\u0178\x03\x02\x02\x02\u0178\u017B\x03\x02\x02\x02\u0179\u0177\x03" +
		"\x02\x02\x02\u017A\u017C\x05u;\x02\u017B\u017A\x03\x02\x02\x02\u017B\u017C" +
		"\x03\x02\x02\x02\u017C\u018E\x03\x02\x02\x02\u017D\u017F\x070\x02\x02" +
		"\u017E\u0180\x05\x81A\x02\u017F\u017E\x03\x02\x02\x02\u0180\u0181\x03" +
		"\x02\x02\x02\u0181\u017F\x03\x02\x02\x02\u0181\u0182\x03\x02\x02\x02\u0182" +
		"\u0184\x03\x02\x02\x02\u0183\u0185\x05u;\x02\u0184\u0183\x03\x02\x02\x02" +
		"\u0184\u0185\x03\x02\x02\x02\u0185\u018E\x03\x02\x02\x02\u0186\u0188\x05" +
		"\x81A\x02\u0187\u0186\x03\x02\x02\x02\u0188\u0189\x03\x02\x02\x02\u0189" +
		"\u0187\x03\x02\x02\x02\u0189\u018A\x03\x02\x02\x02\u018A\u018B\x03\x02" +
		"\x02\x02\u018B\u018C\x05u;\x02\u018C\u018E\x03\x02\x02\x02\u018D\u016F" +
		"\x03\x02\x02\x02\u018D\u017D\x03\x02\x02\x02\u018D\u0187\x03\x02\x02\x02" +
		"\u018Er\x03\x02\x02\x02\u018F\u0190\x072\x02\x02\u0190\u0192\t\x06\x02" +
		"\x02\u0191\u0193\x05\x83B\x02\u0192\u0191\x03\x02\x02\x02\u0193\u0194" +
		"\x03\x02\x02\x02\u0194\u0192\x03\x02\x02\x02\u0194\u0195\x03\x02\x02\x02" +
		"\u0195\u0196\x03\x02\x02\x02\u0196\u019A\x070\x02\x02\u0197\u0199\x05" +
		"\x83B\x02\u0198\u0197\x03\x02\x02\x02\u0199\u019C\x03\x02\x02\x02\u019A" +
		"\u0198\x03\x02\x02\x02\u019A\u019B\x03\x02\x02\x02\u019B\u019E\x03\x02" +
		"\x02\x02\u019C\u019A\x03\x02\x02\x02\u019D\u019F\x05w<\x02\u019E\u019D" +
		"\x03\x02\x02\x02\u019E\u019F\x03\x02\x02\x02\u019F\u01B5\x03\x02\x02\x02" +
		"\u01A0\u01A1\x072\x02\x02\u01A1\u01A2\t\x06\x02\x02\u01A2\u01A4\x070\x02" +
		"\x02\u01A3\u01A5\x05\x83B\x02\u01A4\u01A3\x03\x02\x02\x02\u01A5\u01A6" +
		"\x03\x02\x02\x02\u01A6\u01A4\x03\x02\x02\x02\u01A6\u01A7\x03\x02\x02\x02" +
		"\u01A7\u01A9\x03\x02\x02\x02\u01A8\u01AA\x05w<\x02\u01A9\u01A8\x03\x02" +
		"\x02\x02\u01A9\u01AA\x03\x02\x02\x02\u01AA\u01B5\x03\x02\x02\x02\u01AB" +
		"\u01AC\x072\x02\x02\u01AC\u01AE\t\x06\x02\x02\u01AD\u01AF\x05\x83B\x02" +
		"\u01AE\u01AD\x03\x02\x02\x02\u01AF\u01B0\x03\x02\x02\x02\u01B0\u01AE\x03" +
		"\x02\x02\x02\u01B0\u01B1\x03\x02\x02\x02\u01B1\u01B2\x03\x02\x02\x02\u01B2" +
		"\u01B3\x05w<\x02\u01B3\u01B5\x03\x02\x02\x02\u01B4\u018F\x03\x02\x02\x02" +
		"\u01B4\u01A0\x03\x02\x02\x02\u01B4\u01AB\x03\x02\x02\x02\u01B5t\x03\x02" +
		"\x02\x02\u01B6\u01B8\t\x07\x02\x02\u01B7\u01B9\t\b\x02\x02\u01B8\u01B7" +
		"\x03\x02\x02\x02\u01B8\u01B9\x03\x02\x02\x02\u01B9\u01BB\x03\x02\x02\x02" +
		"\u01BA\u01BC\x05\x81A\x02\u01BB\u01BA\x03\x02\x02\x02\u01BC\u01BD\x03" +
		"\x02\x02\x02\u01BD\u01BB\x03\x02\x02\x02\u01BD\u01BE\x03\x02\x02\x02\u01BE" +
		"v\x03\x02\x02\x02\u01BF\u01C1\t\t\x02\x02\u01C0\u01C2\t\b\x02\x02\u01C1" +
		"\u01C0\x03\x02\x02\x02\u01C1\u01C2\x03\x02\x02\x02\u01C2\u01C4\x03\x02" +
		"\x02\x02\u01C3\u01C5\x05\x81A\x02\u01C4\u01C3\x03\x02\x02\x02\u01C5\u01C6" +
		"\x03\x02\x02\x02\u01C6\u01C4\x03\x02\x02\x02\u01C6\u01C7\x03\x02\x02\x02" +
		"\u01C7x\x03\x02\x02\x02\u01C8\u01C9\x07^\x02\x02\u01C9\u01D3\t\n\x02\x02" +
		"\u01CA\u01CC\x07^\x02\x02\u01CB\u01CD\x07\x0F\x02\x02\u01CC\u01CB\x03" +
		"\x02\x02\x02\u01CC\u01CD\x03\x02\x02\x02\u01CD\u01CE\x03\x02\x02\x02\u01CE" +
		"\u01D3\x07\f\x02\x02\u01CF\u01D3\x05{>\x02\u01D0\u01D3\x05}?\x02\u01D1" +
		"\u01D3\x05\x7F@\x02\u01D2\u01C8\x03\x02\x02\x02\u01D2\u01CA\x03\x02\x02" +
		"\x02\u01D2\u01CF\x03\x02\x02\x02\u01D2\u01D0\x03\x02\x02\x02\u01D2\u01D1" +
		"\x03\x02\x02\x02\u01D3z\x03\x02\x02\x02\u01D4\u01D5\x07^\x02\x02\u01D5" +
		"\u01E0\x05\x81A\x02\u01D6\u01D7\x07^\x02\x02\u01D7\u01D8\x05\x81A\x02" +
		"\u01D8\u01D9\x05\x81A\x02\u01D9\u01E0\x03\x02\x02\x02\u01DA\u01DB\x07" +
		"^\x02\x02\u01DB\u01DC\t\v\x02\x02\u01DC\u01DD\x05\x81A\x02\u01DD\u01DE" +
		"\x05\x81A\x02\u01DE\u01E0\x03\x02\x02\x02\u01DF\u01D4\x03\x02\x02\x02" +
		"\u01DF\u01D6\x03\x02\x02\x02\u01DF\u01DA\x03\x02\x02\x02\u01E0|\x03\x02" +
		"\x02\x02\u01E1\u01E2\x07^\x02\x02\u01E2\u01E3\x07z\x02\x02\u01E3\u01E4" +
		"\x05\x83B\x02\u01E4\u01E5\x05\x83B\x02\u01E5~\x03\x02\x02\x02\u01E6\u01E7" +
		"\x07^\x02\x02\u01E7\u01E8\x07w\x02\x02\u01E8\u01E9\x07}\x02\x02\u01E9" +
		"\u01EB\x03\x02\x02\x02\u01EA\u01EC\x05\x83B\x02\u01EB\u01EA\x03\x02\x02" +
		"\x02\u01EC\u01ED\x03\x02\x02\x02\u01ED\u01EB\x03\x02\x02\x02\u01ED\u01EE" +
		"\x03\x02\x02\x02\u01EE\u01EF\x03\x02\x02\x02\u01EF\u01F0\x07\x7F\x02\x02" +
		"\u01F0\x80\x03\x02\x02\x02\u01F1\u01F2\t\f\x02\x02\u01F2\x82\x03\x02\x02" +
		"\x02\u01F3\u01F4\t\r\x02\x02\u01F4\x84\x03\x02\x02\x02\u01F5\u01F6\x07" +
		"/\x02\x02\u01F6\u01F7\x07/\x02\x02\u01F7\u01F8\x07]\x02\x02\u01F8\u01F9" +
		"\x03\x02\x02\x02\u01F9\u01FA\x05k6\x02\u01FA\u01FB\x07_\x02\x02\u01FB" +
		"\u01FC\x03\x02\x02\x02\u01FC\u01FD\bC\x02\x02\u01FD\x86\x03\x02\x02\x02" +
		"\u01FE\u01FF\x07/\x02\x02\u01FF\u0200\x07/\x02\x02\u0200\u021E\x03\x02" +
		"\x02\x02\u0201\u021F\x03\x02\x02\x02\u0202\u0206\x07]\x02\x02\u0203\u0205" +
		"\x07?\x02\x02\u0204\u0203\x03\x02\x02\x02\u0205\u0208\x03\x02\x02\x02" +
		"\u0206\u0204\x03\x02\x02\x02\u0206\u0207\x03\x02\x02\x02\u0207\u021F\x03" +
		"\x02\x02\x02\u0208\u0206\x03\x02\x02\x02\u0209\u020D\x07]\x02\x02\u020A" +
		"\u020C\x07?\x02\x02\u020B\u020A\x03\x02\x02\x02\u020C\u020F\x03\x02\x02" +
		"\x02\u020D\u020B\x03\x02\x02\x02\u020D\u020E\x03\x02\x02\x02\u020E\u0210" +
		"\x03\x02\x02\x02\u020F\u020D\x03\x02\x02\x02\u0210\u0214\n\x0E\x02\x02" +
		"\u0211\u0213\n\x0F\x02\x02\u0212\u0211\x03\x02\x02\x02\u0213\u0216\x03" +
		"\x02\x02\x02\u0214\u0212\x03\x02\x02\x02\u0214\u0215\x03\x02\x02\x02\u0215" +
		"\u021F\x03\x02\x02\x02\u0216\u0214\x03\x02\x02\x02\u0217\u021B\n\x10\x02" +
		"\x02\u0218\u021A\n\x0F\x02\x02\u0219\u0218\x03\x02\x02\x02\u021A\u021D" +
		"\x03\x02\x02\x02\u021B\u0219\x03\x02\x02\x02\u021B\u021C\x03\x02\x02\x02" +
		"\u021C\u021F\x03\x02\x02\x02\u021D\u021B\x03\x02\x02\x02\u021E\u0201\x03" +
		"\x02\x02\x02\u021E\u0202\x03\x02\x02\x02\u021E\u0209\x03\x02\x02\x02\u021E" +
		"\u0217\x03\x02\x02";
	private static readonly _serializedATNSegment1: string =
		"\x02\u021F\u0223\x03\x02\x02\x02\u0220\u0221\x07\x0F\x02\x02\u0221\u0224" +
		"\x07\f\x02\x02\u0222\u0224\t\x11\x02\x02\u0223\u0220\x03\x02\x02\x02\u0223" +
		"\u0222\x03\x02\x02\x02\u0224\u0225\x03\x02\x02\x02\u0225\u0226\bD\x02" +
		"\x02\u0226\x88\x03\x02\x02\x02\u0227\u0229\t\x12\x02\x02\u0228\u0227\x03" +
		"\x02\x02\x02\u0229\u022A\x03\x02\x02\x02\u022A\u0228\x03\x02\x02\x02\u022A" +
		"\u022B\x03\x02\x02\x02\u022B\u022C\x03\x02\x02\x02\u022C\u022D\bE\x03" +
		"\x02\u022D\x8A\x03\x02\x02\x02\u022E\u022F\x07%\x02\x02\u022F\u0233\x07" +
		"#\x02\x02\u0230\u0232\n\x0F\x02\x02\u0231\u0230\x03\x02\x02\x02\u0232" +
		"\u0235\x03\x02\x02\x02\u0233\u0231\x03\x02\x02\x02\u0233\u0234\x03\x02" +
		"\x02\x02\u0234\u0236\x03\x02\x02\x02\u0235\u0233\x03\x02\x02\x02\u0236" +
		"\u0237\bF\x02\x02\u0237\x8C\x03\x02\x02\x02*\x02\u0139\u013F\u0141\u0149" +
		"\u014B\u015C\u0160\u0165\u016C\u0171\u0177\u017B\u0181\u0184\u0189\u018D" +
		"\u0194\u019A\u019E\u01A6\u01A9\u01B0\u01B4\u01B8\u01BD\u01C1\u01C6\u01CC" +
		"\u01D2\u01DF\u01ED\u0206\u020D\u0214\u021B\u021E\u0223\u022A\u0233\x04" +
		"\x02\x03\x02\b\x02\x02";
	public static readonly _serializedATN: string = Utils.join(
		[
			LuaLexer._serializedATNSegment0,
			LuaLexer._serializedATNSegment1,
		],
		"",
	);
	public static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!LuaLexer.__ATN) {
			LuaLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(LuaLexer._serializedATN));
		}

		return LuaLexer.__ATN;
	}

}

